#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#define INF 0x3f3f3f3f
using namespace std;

int dp[30010][4];
int a[30010];
int n;
int ans;

void fun()
{
    for(int i=1; i<=n; i++)
        for(int j=1; j<=3; j++)
        {
            if(a[i]==j)
            {
                dp[i][j]=INF;
                for(int k=j; k>=1; k--)
                    dp[i][j]=min(dp[i][j], dp[i-1][k]);
            }
            else
                dp[i][j]=dp[i-1][j]+1;            
        }
}

int main()
{
    while(~scanf("%d", &n))
    {
        memset(dp, 0, sizeof(dp));
        memset(a, 0, sizeof(a));
        for(int i=1; i<=n; i++)
            scanf("%d", &a[i]);
        fun();
        ans=min(dp[n][1], dp[n][2]);
        ans=min(dp[n][3], ans);
        for(int i=1; i<=n/2; i++)
        {
            int t=a[i];
            a[i]=a[n-i+1];
            a[n-i+1]=t;
        }
        fun();
        ans=min(ans, dp[n][1]);
        ans=min(ans, dp[n][2]);
        ans=min(ans, dp[n][3]);
        printf("%d\n", ans);
    }
    return 0;
}
